﻿// CTabPage2Dialog.cpp: 实现文件
//

#include "pch.h"
#include "DataSynApp.h"
#include "afxdialogex.h"
#include "CTabPage2Dialog.h"
#include "DataSynAppDlg.h"


// CTabPage2Dialog 对话框

IMPLEMENT_DYNAMIC(CTabPage2Dialog, CDialogEx)

CTabPage2Dialog::CTabPage2Dialog(CWnd* pParent /*=nullptr*/)
	: CDialogEx(IDD_TABPAGE2, pParent)
{

}

CTabPage2Dialog::~CTabPage2Dialog()
{
}

void CTabPage2Dialog::DoDataExchange(CDataExchange* pDX)
{
	CDialogEx::DoDataExchange(pDX);
	DDX_Control(pDX, IDC_DATETIMEPICKER_zg_nyr, zg_nyr);
	DDX_Control(pDX, IDC_DATETIMEPICKER_zg_sfm, zg_sfm);
	DDX_Control(pDX, IDC_DATETIMEPICKER_bj_nyr, bj_nyr);
	DDX_Control(pDX, IDC_DATETIMEPICKER_bj_sfm, bj_sfm);
}


BEGIN_MESSAGE_MAP(CTabPage2Dialog, CDialogEx)
	ON_BN_CLICKED(IDC_BUTTON1, &CTabPage2Dialog::OnBnClickedButton1)
END_MESSAGE_MAP()


// CTabPage2Dialog 消息处理程序

CString GetDateTimeFromControls(CDateTimeCtrl& dateCtrl, CDateTimeCtrl& timeCtrl)
{
	COleDateTime date, time;

	// 从控件中获取日期和时间
	dateCtrl.GetTime(date);
	timeCtrl.GetTime(time);

	// 将日期和时间组合成一个字符串，格式为 "YYYY-MM-DD HH:MM:SS"
	CString dateTimeStr;
	dateTimeStr.Format(_T("%04d-%02d-%02d %02d:%02d:%02d"),
		date.GetYear(), date.GetMonth(), date.GetDay(),
		time.GetHour(), time.GetMinute(), time.GetSecond());

	return dateTimeStr;
}

void CTabPage2Dialog::OnBnClickedButton1()
{
	appDlg->OnBnClickedButton2();
	CString zgTime = GetDateTimeFromControls(zg_nyr, zg_sfm);
	CString bjTime = GetDateTimeFromControls(bj_nyr, bj_sfm);

	// 保存到 iniData 或者其他配置文件中
	iniData[_T("SendDateTime")][_T("ZGtime")] = zgTime;
	iniData[_T("SendDateTime")][_T("BJtime")] = bjTime;
	WriteIniFile(appDlg->exePath, iniData);
	AfxMessageBox(_T("保存成功，请关闭此窗口，点击开始上传。"), MB_OK | MB_ICONINFORMATION, 0);


}
COleDateTime ParseDateTimeString(const CString& dateTimeStr)
{
	// 如果字符串为空，则返回一个无效的 COleDateTime 对象
	if (dateTimeStr.IsEmpty())
	{
		return COleDateTime();  // 返回默认构造的 COleDateTime（无效状态）
	}

	int year, month, day, hour, minute, second;
	int result = _stscanf_s(dateTimeStr, _T("%d-%d-%d %d:%d:%d"), &year, &month, &day, &hour, &minute, &second);

	// 如果解析失败，返回一个无效日期
	if (result != 6)
	{
		return COleDateTime();  // 返回无效的 COleDateTime 对象
	}

	// 创建 COleDateTime 对象
	COleDateTime dateTime(year, month, day, hour, minute, second);

	// 检查 COleDateTime 对象的状态
	if (dateTime.GetStatus() != COleDateTime::valid)
	{
		// 返回一个无效的 COleDateTime 对象
		return COleDateTime();  // 或者 COleDateTime::invalid
	}

	return dateTime;
}

void SetDateTimeToControls(CDateTimeCtrl& dateCtrl, CDateTimeCtrl& timeCtrl, const CString& dateTimeStr)
{
	// 解析日期时间
	COleDateTime dateTime = ParseDateTimeString(dateTimeStr);

	// 检查日期时间是否有效
	if (dateTime.GetStatus() == COleDateTime::valid)
	{
		// 提取年月日部分
		COleDateTime dateOnly(dateTime.GetYear(), dateTime.GetMonth(), dateTime.GetDay(), 0, 0, 0);
		dateCtrl.SetTime(dateOnly);

		// 提取时分秒部分
		COleDateTime timeOnly(1899, 12, 30, dateTime.GetHour(), dateTime.GetMinute(), dateTime.GetSecond());
		timeCtrl.SetTime(timeOnly);
	}
	else
	{
		// 日期时间无效，显示错误消息
		AfxMessageBox(_T("无效的日期时间格式或空字符串！"));
	}
}


BOOL CTabPage2Dialog::OnInitDialog()
{
	CDialogEx::OnInitDialog();
	ModifyStyle(WS_THICKFRAME, 0);
	CString ZGtime = iniData[_T("SendDateTime")][_T("ZGtime")];// 2024-09-08 17:39:00 
	CString BJtime = iniData[_T("SendDateTime")][_T("BJtime")];// 2024-08-23 00:00:00
	if (ZGtime != "")
	{
		SetDateTimeToControls(zg_nyr, zg_sfm, ZGtime);
	}
	if (BJtime != "")
	{
		SetDateTimeToControls(bj_nyr, bj_sfm, BJtime);
	}
	// 设置北京时间到控件

	return TRUE;  // return TRUE unless you set the focus to a control
	// 异常: OCX 属性页应返回 FALSE
}
